<!-- v3tss -->
<template>
  <div>子组件</div>
  <div>
    方式：{{thing}}
  </div>
  <button @click="hClick">回礼</button>
</template>

<script setup lang="ts">

// ts语法
/* defineProps<{
    thing:string
}>() */
type PropsType={
  // 设置可选项：属性后面加？
    thing?:string
}
// 设置默认值：解构时设置
// const props= defineProps<PropsType>()
// console.log(props)
// const {thing='事情'}=toRefs(props)
// console.log(thing)

const {thing='事情'}=defineProps<PropsType>()
console.log(thing)

// const emit= defineEmits(['getGift'])

// ts语法：既要对事件名做约束也要对参数做约束 
const emit=defineEmits<{
// 泛型对象中右几个事件就写几个约束
// ():中有n个参数 固定的是e,其他就根据具体参数来决定
// e 事件名
// 后面语法为 参数名:类型
// 完整语法 (e:事件名,参数名1：类型，参数名2:类型):void 
(e:'getGift',gift:string):void
}>()
const hClick=()=>{
  // 子传父 
emit('getGift','子传父')
}
</script>

<style scoped>
</style>